package com.tancire.net.mapper;

import java.math.BigDecimal;
import java.util.List;

import com.tancire.net.domain.PurseInfo;
import org.apache.ibatis.annotations.Param;

/**
 * 会员钱包Mapper接口
 *
 * @author chenchao
 * @date 2023-11-19
 */
public interface PurseInfoMapper {
    /**
     * 查询会员钱包
     *
     * @param id 会员钱包主键
     * @return 会员钱包
     */
    PurseInfo selectPurseInfoById(Long id);

    /**
     * 查询会员钱包列表
     *
     * @param purseInfo 会员钱包
     * @return 会员钱包集合
     */
    List<PurseInfo> selectPurseInfoList(PurseInfo purseInfo);

    /**
     * 新增会员钱包
     *
     * @param purseInfo 会员钱包
     * @return 结果
     */
    int insertPurseInfo(PurseInfo purseInfo);

    /**
     * 修改会员钱包
     *
     * @param purseInfo 会员钱包
     * @return 结果
     */
    int updatePurseInfo(PurseInfo purseInfo);

    /**
     * 删除会员钱包
     *
     * @param id 会员钱包主键
     * @return 结果
     */
    int deletePurseInfoById(Long id);

    /**
     * 批量删除会员钱包
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    int deletePurseInfoByIds(Long[] ids);

    /**
     * 根据会员ID 查询钱包信息
     *
     * @param id
     * @return
     */
    PurseInfo selectPurseInfoByUserId(Long id);

    /**
     * 更新积分
     *
     * @param id
     * @param activePoints
     */
    void updatePoints(@Param("id") Long id, @Param("activePoints") BigDecimal activePoints);

    /**
     * 同步更新钱包会员名
     *
     * @param userId
     * @param nickname
     */
    void asyncUpdatePurse(@Param("userId") Long userId, @Param("nickname") String nickname);
}
